package com.backend.system.util;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

/**
 * 时间工具类
 *
 * @version v1.0
 * @author: backend-manage
 * @date: 2024年01月18日 22时40分
 */
public class TimeUtil {

    public static final String DEFAULT_DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

    public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";

    public static final String GMT_8 = "GMT+8";

    private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * 时间转字符串（yyyy-MM-dd HH:mm:ss）
     *
     * @param localDateTime 时间实例
     * @return 字符串
     */
    public static String parse(LocalDateTime localDateTime) {
        if (localDateTime == null) {
            return "";
        }
        return DATE_TIME_FORMATTER.format(localDateTime);
    }


    /**
     * 格式化时间（yyyy-MM-dd HH:mm:ss）
     *
     * @param dateTime 时间字符串
     * @return LocalDateTime 实例
     */
    public static LocalDateTime format(String dateTime) {
        if (dateTime == null) {
            return null;
        }
        return LocalDateTime.parse(dateTime, DATE_TIME_FORMATTER);
    }


    /**
     * 获取一天的起始时间
     */
    public static LocalDateTime getDayBeginDateTime(LocalDateTime currentDateTime) {
        return LocalDateTime.of(currentDateTime.toLocalDate(), LocalTime.MIN);
    }

    /**
     * 获取一天的结束时间
     */
    public static LocalDateTime getDayEndDateTime(LocalDateTime currentDateTime) {
        return LocalDateTime.of(currentDateTime.toLocalDate(), LocalTime.MAX);
    }

    /**
     * 获取一天的起始时间
     */
    public static LocalDateTime getDayBeginDateTime(LocalDate currentDate) {
        return LocalDateTime.of(currentDate, LocalTime.MIN);
    }

    /**
     * 获取一天的结束时间
     */
    public static LocalDateTime getDayEndDateTime(LocalDate currentDate) {
        return LocalDateTime.of(currentDate, LocalTime.MAX);
    }
}
